package com.icebartech.base.modules.user.service;

import com.github.pagehelper.PageInfo;
import com.icebartech.base.modules.user.dto.AppRoleInfoDTO;
import com.icebartech.base.modules.user.model.AppRole;
import com.icebartech.core.modules.BaseService;

/**
 * 角色service接口
 * @author xiaoxiong
 *
 */
public interface AppRoleService extends BaseService{
    
	/**
	 * 根据用户id查找对应的用户角色（只支持单角色）
	 * @param userId
	 * @return
	 */
    public AppRole findRoleByUserId(Long userId);
    
    /**
     * 保存角色与角色对应的权限项
     * @param appRoleInfo
     * @return
     */
    public boolean saveAppRole(AppRoleInfoDTO appRoleInfo);
    
    /**
     * 根据筛选条件分页查找对应的角色列表
     * @param record 筛选条件
     * @param pageIndex 第几页
     * @param pageSize 每页大小
     * @return
     */
    public PageInfo<AppRoleInfoDTO> findAppRoleByPage(AppRole record, int pageIndex, int pageSize);
    
    /**
     * 根据角色主键id获取对应的角色信息记录
     * @param roleId 
     * @return
     */
    public AppRoleInfoDTO getRoleInfoByRoleId(Long roleId);
    
    /**
     * 检查是否有对应的权限
     * @param userId 用户id
     * @param permissionId 权限id
     * @return
     */
    boolean checkPermissions(Long userId, Long permissionId);
    
    /**
	 * 根据role_key获取角色key
	 * @param roleKey 角色key
	 * @return
	 */
	AppRole findRoleByRoleKey(String roleKey);
    
	/**
	 * 删除对应的角色
	 * @param roleId 角色id
	 * @return
	 */
	public boolean deleteRoleByRoleId(Long roleId);
}
